package com.example.kotlin_library

import android.os.Build
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.platform.LocalContext
import coil3.ImageLoader
import coil3.annotation.ExperimentalCoilApi
import coil3.compose.AsyncImage
import coil3.compose.LocalPlatformContext
import coil3.compose.setSingletonImageLoaderFactory
import com.example.kotlin_library.gif.AnimatedImageDecoder
import com.example.kotlin_library.gif.GifDecoder

/**
 * Android 平台使用 Coil 加载图片（包括 GIF）的示例
 *
 * 使用方式：
 * 1. 在应用启动时调用 setupCoilForGif() 配置 ImageLoader
 * 2. 然后直接使用 CoilSample() Composable 加载图片
 */

/**
 * 配置全局 ImageLoader 以支持 GIF
 * 建议在 Application.onCreate() 或 MainActivity.onCreate() 中调用一次
 */
@OptIn(ExperimentalCoilApi::class)
fun setupCoilForGif(context: android.content.Context) {
    setSingletonImageLoaderFactory { ctx ->
        ImageLoader.Builder(ctx)
            .components {
                // 注册 GIF 解码器
                if (Build.VERSION.SDK_INT >= 28) {
                    add(AnimatedImageDecoder.Factory())
                } else {
                    add(GifDecoder.Factory())
                }
            }
            .build()
    }
}

/**
 * 使用 AsyncImage 加载图片（支持 GIF 动画）
 *
 * 使用示例：
 * ```kotlin
 * // 在 Application 或 MainActivity 中初始化
 * setupCoilForGif(context)
 *
 * // 然后在 Compose 中使用
 * CoilSample()
 * ```
 */
@Composable
fun CoilSample() {
    AsyncImage(
        model = "https://img.freepik.com/premium-photo/collection-greek-islands-photos_771335-44194.jpg",
        contentDescription = null,
    )
}

/**
 * 方式2：在每个 Composable 中创建自定义 ImageLoader
 * 这种方式不需要全局配置，但会为每个图片创建 ImageLoader
 */
@OptIn(ExperimentalCoilApi::class)
@Composable
fun CoilSampleWithCustomLoader() {
    val context = LocalContext.current
    val imageLoader = remember {
        ImageLoader.Builder(context)
            .components {
                if (Build.VERSION.SDK_INT >= 28) {
                    add(AnimatedImageDecoder.Factory())
                } else {
                    add(GifDecoder.Factory())
                }
            }
            .build()
    }

    AsyncImage(
        model = "https://img.freepik.com/premium-photo/collection-greek-islands-photos_771335-44194.jpg",
        contentDescription = null,
        imageLoader = imageLoader  // 使用自定义的 ImageLoader
    )
}

/**
 * 加载 GIF 的示例
 */
@Composable
fun GifSample() {
    AsyncImage(
        model = "https://example.com/animated.gif",  // GIF URL
        contentDescription = "Animated GIF",
    )
}